package common.mq.basic.util;

import java.util.GregorianCalendar;

import common.mq.po.ExceType;
import common.mq.po.Message;
import common.mq.po.TimingType;

public class MessageUtil {

	final static org.slf4j.Logger log = org.slf4j.LoggerFactory
			.getLogger(MessageUtil.class);

	/**
	 * 暂时采用默认方式计算定时类型消息下次发送时间 默认方式，（第0 or 1次：10s以后）（第二次：60s以后）（第3次：5min以后）（大于第三次：10min以后）
	 * 
	 * @param type
	 * @return 下次执行的绝对时间
	 */
	public static int genNextTimeByTimingType(TimingType type, Message m) {
		int now = (int) new GregorianCalendar().getTimeInMillis() / 1000;
		int res = 0;
		switch (type) {
		case DEFAULT:
			switch (m.getCount()) {
			case 0:
			case 1:
				res = now + 10;break;
			case 2:
				res = now + 60;break;
			case 3:
				res = now + 5 * 60;break;
			default:
				res = now + 60 * 60;
			}
			break;
		default:
			log.warn("[genNextTimeByTimingType] timing type message TIMING_TYPE not exist => " + type);
			return -1;
		}
		return res;
	}

	/**
	 * 暂时采用默认方式计算异常类型消息下次发送时间 默认方式，（前三次：10s以后）（大于等于第三次：10min以后）
	 * 
	 * @param type
	 * @return 下次执行的绝对时间
	 */
	public static int genNextTimeByExceType(ExceType type, Message m) {
		int now = (int) new GregorianCalendar().getTimeInMillis() / 1000;
		int res = 0;
		switch (type) {
		case DEFAULT:
			switch (m.getCount()) {
			case 0:
			case 1:
			case 2:
			case 3:
				res = now + 10;break;
			default:
				res = now + 10 * 60 ;
			}
			break;
		default:
			log.warn("[genNextTimeByExceType] exce type message EXCE_TYPE not exist => " + type);
			return -1;
		}
		return res;
	}
}
